home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / brutil.arc / BLANK.ASM < prev    next >
Encoding:
Assembly Source File  |  1988-04-08  |  3.5 KB  |  210 lines

  1. LF    EQU    0AH
  2. CR    EQU    0DH
  3. CODE    SEGMENT
  4.     ASSUME    CS:CODE,DS:CODE,ES:CODE,SS:CODE
  5.     ORG    0100H
  6. START:    MOV    AH,25
  7.     INT    21H
  8.     MOV    DL,AL
  9.     MOV    AH,14
  10.     INT    21H
  11.     ADD    AL,'@'
  12.     MOV    L0307A,AL
  13.     MOV    L0307B,AL
  14.     CMP    BYTE PTR DS:80H,0
  15.     JZ    L012E
  16.     MOV    AL,DS:5CH
  17.     OR    AL,AL
  18.     JZ    L012E
  19.     CMP    AL,2
  20.     JBE    L0139
  21.     MOV    AL,L0307A
  22.     SUB    AL,'@'
  23.     CMP    AL,DS:5CH
  24.     JNZ    L012E
  25.     MOV    BYTE PTR DS:6DH,'Y'
  26.     JMP    SHORT L0139
  27. L012E:    MOV    DX,OFFSET L0307
  28.     MOV    AH,9
  29.     INT    21H
  30.     MOV    AX,4C01H
  31.     INT    21H
  32. L0139:    DEC    AL
  33.     MOV    L028B,AL
  34.     ADD    AL,'A'
  35.     MOV    L02CB,AL
  36. L0149:    MOV    AL,DS:6DH
  37.     CMP    AL,'Y'
  38.     JZ    L0178
  39.     MOV    DX,OFFSET L02B1
  40.     MOV    AH,9
  41.     INT    21H
  42. L0151:    MOV    AX,0C07H
  43.     INT    21H
  44.     AND    AL,5FH
  45.     CMP    AL,'Y'
  46.     JZ    L0178
  47.     CMP    AL,'N'
  48.     JZ    L0166
  49.     MOV    AH,2
  50.     MOV    DL,7
  51.     INT    21H
  52.     JMP    SHORT    L0151
  53.  
  54. L0166:    MOV    AX,0C00H
  55.     INT    21H
  56.     MOV    AH,13
  57.     INT    21H
  58.     MOV    AX,4C00H
  59.     INT    21H
  60. L0178:    MOV    DL,L028B
  61.     INC    DL
  62.     MOV    AH,36H    ;'6'
  63.     INT    21H
  64.     INC    AX
  65.     JNZ    L018B
  66.     MOV    AL,0CH
  67.     JMP    SHORT L01A7
  68. L018B:    MOV    CX,1
  69.     MOV    DX,0
  70.     MOV    BX,OFFSET L08CB
  71.     MOV    AL,L028B
  72.     INT    25H
  73.     POP    DX
  74.     JB    L01A7
  75.     MOV    AL,7
  76.     CMP    WORD PTR L08D6,0200H
  77.     JZ    L01AA
  78. L01A7:    JMP    L0256
  79. L01AA:    MOV    AX,L08DC
  80.     MOV    CL,4
  81.     SHL    AX,CL
  82.     MOV    L0283,AX
  83.     MOV    CL,8
  84.     SHR    AX,CL
  85.     MOV    CL,L08DB
  86.     XOR    CH,CH
  87.     MOV    L0289,CX
  88.     MOV    BX,L08E1
  89. L01C6:    ADD    AX,BX
  90.     LOOP    L01C6
  91.     MOV    L0285,AX
  92.     MOV    CL,8
  93.     SHL    BX,CL
  94.     MOV    L0287,BX
  95.     MOV    CX,L0285
  96.     MOV    DX,1
  97.     MOV    BX,OFFSET L08CB
  98.     MOV    AL,L028B
  99.     INT    25H
  100.     POP    DX
  101.     JB    L0256
  102.     MOV    SI,OFFSET L08CE
  103.     MOV    DI,L0287
  104.     SHL    DI,1
  105.     ADD    DI,SI
  106.     SUB    DI,5
  107.     CLD
  108. L01F8:    LODSW
  109.     AND    AH,0FH
  110.     CMP    AX,0FF7H
  111.     JZ    L0206
  112.     AND    WORD PTR [SI-2],0F000H
  113. L0206:    DEC    SI
  114.     CMP    SI,DI
  115.     JA    L021C
  116.     LODSW
  117.     AND    AL,0F0H
  118.     CMP    AX,0FF70H
  119.     JZ    L0218
  120.     AND    WORD PTR [SI-2],0FH
  121. L0218:    CMP    SI,DI
  122.     JBE    L01F8
  123. L021C:    MOV    SI,OFFSET L08CB
  124.     MOV    DI,L0287
  125.     SHL    DI,1
  126.     ADD    DI,SI
  127.     MOV    CX,L0289
  128.     JMP    SHORT    L0236
  129. L022E:    PUSH    CX
  130.     MOV    CX,L0287
  131.     REPZ    MOVSW
  132.     POP    CX
  133. L0236:    LOOP    L022E
  134.     XOR    AX,AX
  135.     MOV    CX,L0283
  136.     REPZ    STOSW
  137.     MOV    CX,L0285
  138.     MOV    DX,1
  139.     MOV    BX,OFFSET L08CB
  140.     MOV    AL,L028B
  141.     INT    26H
  142.     POP    DX
  143.     JB    L0256
  144.     MOV    AL,DS:6DH
  145.     CMP    AL,'Y'
  146.     JNZ    L0149A
  147.     JMP    L0166
  148. L0149A: JMP    L0149
  149. L0256:    CMP    AL,0CH
  150.     JBE    L025C
  151.     MOV    AL,0CH
  152. L025C:    MOV    BX,OFFSET L07E9
  153.     XOR    AH,AH
  154.     SHL    AX,1
  155.     ADD    BX,AX
  156.     MOV    DX,[BX]
  157.     MOV    AH,9
  158.     INT    21H
  159.     MOV    DX,OFFSET L08AB
  160.     MOV    AH,9
  161.     INT    21H
  162. L0274:    MOV    AX,0C07H
  163.     INT    21H
  164.     MOV    AX,0C00H
  165.     INT    21H
  166.     MOV    AX,4C01H
  167.     INT    21H
  168. L0283    DW    0
  169. L0285    DW    0
  170. L0287    DW    0
  171. L0289    DW    0
  172. L028B    DB    0
  173. L02B1    DB    CR,LF,'Blank diskette in drive '
  174. L02CB    DB    'X:? (Y/N):$'
  175. L0307    DB    'Syntax: BLANK x:[ Y]',CR,LF
  176.     DB    'Where: x    = diskette drive id ( A or B or '
  177. L0307A    DB    'x )',CR,LF
  178.     DB    '              drive '
  179. l0307b    DB    'x does not need Y because it is assumed to be a ram disk.'
  180.     DB    CR,LF
  181.     DB    '       [ Y] = used to reformat a single diskette',CR,LF
  182.     DB    'Function:',CR,LF
  183.     DB    '   Quickly reformats multiple or single diskettes.',CR,LF
  184.     DB    '   All files deleted, including hidden, system, and label.'
  185.     DB    CR,LF,'$'
  186. L07E9    DW    L0803,L081C,L082E,L0896,L083D
  187.     DW    L0896,L0850,L085B,L086E,L0896
  188.     DW    L087F,L088B,L0896
  189. L0803    DB    'Write-Protected Diskette$'
  190. L081C    DB    'Invalid Disk Unit$'
  191. L082E    DB    'Disk Not Ready$'
  192. L083D    DB    'Data ( CRC ) Error$'
  193. L0850    DB    'Seek Error$'
  194. L085B    DB    'Unknown Media Type$'
  195. L086E    DB    'Sector Not Found$'
  196. L087F    DB    'Write Fault$'
  197. L088B    DB    'Read Fault$'
  198. L0896    DB    'General Disk Failure$'
  199. L08AB    DB    ' - Press Any Key to Continue',CR,LF
  200.     DB    7,'$'
  201. L08CB    LABEL    BYTE
  202. L08CE    EQU    L08CB+3
  203. L08D6    EQU    L08CB+11
  204. L08DB    EQU    L08CB+16
  205. L08DC    EQU    WORD PTR L08CB+17
  206. L08E1    EQU    WORD PTR L08CB+22
  207. CODE    ENDS
  208.     END    START
  209. CB+3
  210. L08D6    EQU    L08